﻿// --------------------------------------------------------------------------------------
// <copyright file="IAdministrative.cs" company="NGroup">
// Copyright (c) NGroup. All rights reserved.
// </copyright>
// --------------------------------------------------------------------------------------
// <history>
//     <change who="Bui Thanh Nam" date="2013.12.07">Create</change>
// </history>
// --------------------------------------------------------------------------------------

namespace NGroup.VTL.Service.Abstraction
{
    using System.Collections.Generic;
    using NGroup.VTL.Models;
    using NGroup.VTL.WebCore;
    using NGroup.VTL.Core.Const;

    public interface IAdministrativeService
    {
        bool AddNewProduct(ProductModel model);
        bool AddNewNews(NewsModel model);
        bool DeleteProduct(ProductModel model);
        bool DeletePNews(NewsModel model);
        bool DeleteUser(UserModel model);
        void UpdateProduct(ProductModel model);
        bool UpdateUser(UserModel model);
        void UpdateNews(NewsModel model);
        ProductModel GetProductDetail(int parentTypeID, int childTypeID, string uniqueString);
        NewsModel GetNewsDetail(string uniqueString, LanguageCodes lang);
        UserModel GetUserInformation(string username, string password);
        List<UserModel> GetUserListByPagingInfo(int currentUserRoleId, ref PagingInfoModel pagingInfo);
        bool AddNewUser(UserModel user);
        List<ProductModel> GetProductListByPagingInfo(string filterAuthor, string filterProductSupType, string filterProductType, ref PagingInfoModel pagingInfo);
        List<NewsModel> GetNewsListByPagingInfo(string filterAuthor, int filterNewsTypeId, ref PagingInfoModel pagingInfo);
        bool CheckUniqueString(int typeID, string uniqueString);
        bool CheckUniqueStringGT(int? supTypeID, int? typeID, string uniqueString);
        List<GenericTypeItem> GetAllContentTypesConfigurations();
        bool DeleteGenericType(GenericTypeItem model);
        bool UpdateGenericType(GenericTypeItem model);
        bool AddNewGenericType(GenericTypeItem model);
        bool DeleteOrder(int orderId);
        List<OrderModel> GetOrderListByPagingInfo(string filterProductSupType, string filterProductType, ref PagingInfoModel pagingInfo);
        int GetPendingOrdersCount();
        NewsModel GetNewsDetailForEdit(string uniqueString, LanguageCodes lang);
    }
}
